<!DOCTYPE html>
<html>

<head>
  <title>For fast innovation and to stay ahead of the competition, Talkdesk chooses Quarkus</title>
  <script id="adobe_dtm" src="https://www.redhat.com/dtm.js" type="text/javascript"></script>
  <script src="/assets/javascript/highlight.pack.js" type="text/javascript"></script>
  <META HTTP-EQUIV='Content-Security-Policy' CONTENT="default-src 'none'; script-src 'self' 'unsafe-eval' 'sha256-ANpuoVzuSex6VhqpYgsG25OHWVA1I+F6aGU04LoI+5s=' 'sha256-ipy9P/3rZZW06mTLAR0EnXvxSNcnfSDPLDuh3kzbB1w=' js.bizographics.com https://www.redhat.com assets.adobedtm.com jsonip.com https://ajax.googleapis.com https://www.googletagmanager.com https://www.google-analytics.com https://use.fontawesome.com; style-src 'self' https://fonts.googleapis.com https://use.fontawesome.com; img-src 'self' *; media-src 'self' ; frame-src https://www.googletagmanager.com https://www.youtube.com; frame-ancestors 'none'; base-uri 'none'; object-src 'none'; form-action 'none'; font-src 'self' https://use.fontawesome.com https://fonts.gstatic.com;">
  <META HTTP-EQUIV='X-Frame-Options' CONTENT="DENY">
  <META HTTP-EQUIV='X-XSS-Protection' CONTENT="1; mode=block">
  <META HTTP-EQUIV='X-Content-Type-Options' CONTENT="nosniff">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Quarkus: Supersonic Subatomic Java">
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@QuarkusIO"> 
  <meta name="twitter:creator" content="@QuarkusIO">
  <meta property="og:url" content="https://quarkus.io/blog/talkdesk-chooses-quarkus-for-fast-innovation/" />
  <meta property="og:title" content="For fast innovation and to stay ahead of the competition, Talkdesk chooses Quarkus" />
  <meta property="og:description" content="Quarkus: Supersonic Subatomic Java" />
  <meta property="og:image" content="/assets/images/quarkus_card.png" />
  <link rel="canonical" href="https://quarkus.io/blog/talkdesk-chooses-quarkus-for-fast-innovation/">
  <link rel="shortcut icon" type="image/png" href="/favicon.ico" >
  <link rel="stylesheet" href="https://quarkus.io/guides/stylesheet/config.css" />
  <link rel="stylesheet" href="/assets/css/main.css" />
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
  <link rel="alternate" type="application/rss+xml"  href="https://quarkus.io/feed.xml" title="Quarkus">
  <script src="https://quarkus.io/assets/javascript/goan.js" type="text/javascript"></script>
  <script src="https://quarkus.io/assets/javascript/hl.js" type="text/javascript"></script>
</head>

<body class="post">
  <!-- Google Tag Manager (noscript) -->
  <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NJWS5L"
  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  <!-- End Google Tag Manager (noscript) -->

  <div class="nav-wrapper">
  <div class="grid-wrapper">
    <div class="width-12-12">
      <input type="checkbox" id="checkbox" />
      <nav id="main-nav" class="main-nav">
  <div class="container">
    <div class="logo-wrapper">
      
        <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_600px_reverse.png" class="project-logo" title="Quarkus"></a>
      
    </div>
    <label class="nav-toggle" for="checkbox">
      <i class="fa fa-bars"></i>
    </label>
    <div id="menu" class="menu">
      <span>
        <a href="/get-started/" class="">Get Started</a>
      </span>
      <span>
        <a href="/guides/" class="">Guides</a>
      </span>
      <span>
        <a href="/community/" class="">Community</a>
      </span>
      <span>
        <a href="/support/" class="">Support</a>
      </span>
      <span>
        <a href="/blog/" class="active">Blog</a>
      </span>
      <span>
        <a href="https://code.quarkus.io" class="button-cta secondary white">Start Coding</a>
      </span>
    </div>
  </div>
      </nav>
    </div>
  </div>
</div>

  <div class="content">
    <div class="post-page grid-wrapper">
  <div class="width-8-12 width-12-12-m doc-content">
    <div class="grid-wrapper">
      <div class="width-12-12">
        <p>
          <a href="/blog"><i class="fas fa-angle-left"></i> Back to all posts</a>
        </p>
      </div>
      <div class="width-12-12">
        <div class="post-date">
          December 11, 2019 
          
            <span class="tags"><a href="/blog/tag/user-story">#user-story</a></span>
          
        </div>
        <h1 class="post-title">For fast innovation and to stay ahead of the competition, Talkdesk chooses Quarkus</h1>
        <div class="grid-wrapper">
          <div class="width-8-12 width-12-12-m byline-wrapper">
            
            
              <img class="headshot" src="https://www.gravatar.com/avatar/33c2cb775850e595c2dc1dedd88ef98d">
            
            <p class="byline">By Cesar Saavedra</p>
          </div>
          <div class="width-12-12">
              <div id="preamble">
<div class="sectionbody">
<div class="imageblock customer-logo">
<div class="content">
<img src="/assets/images/posts/quarkus-user-stories/talkdesk/td_logo_2019_cmyk_darkblue.png" alt="Talkdesk logo" width="300">
</div>
</div>
<div class="paragraph">
<p>Talkdesk, founded in 2011, is a fast growing company with a cloud Contact Center as a service (CCaaS) solution featuring increased productivity, higher cost savings and better customer experience. Their platform includes voice solutions, digital channels, workforce engagement management, reporting and analytics, AI and automation, and integrations to third-party software, like Twilio, Salesforce, Zendesk and many others.</p>
</div>
<div class="paragraph">
<p>Since the Talkdesk solution runs on multiple clouds, resource consumption is very important to them and to their customers because optimizing these has a concrete and direct effect on the platform running costs.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="talkdesk-innovation-strategy"><a class="anchor" href="#talkdesk-innovation-strategy"></a>Talkdesk innovation strategy</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Customers can spin up their own cloud contact center as a service platform. Talkdesk had been mostly a Ruby shop. When the customer base started to grow, the product architecture required a change to support higher concurrency, CPU intensive workloads, ecosystem support and better hireability. The company started to look into alternatives and decided to invest in technologies like Kotlin and Spring in 2017. In early 2019, with the desire to create new products and maintain their competitive edge, Talkdesk opened a new innovation office for research and development (R&amp;D) in Coimbra, Portugal. The impetus of this new office was to create new solutions.</p>
</div>
<div class="paragraph">
<p>With this goal in mind, Talkdesk started analyzing technologies that they could use for this innovation work, like Spring Boot, Apache TomEE, Micronaut, DropWizard, Lagom, among others. The same week that they were evaluating frameworks, Quarkus was introduced to the market. The list of Quarkus extensions was very attractive to them due to their familiarity with the APIs, as well as the included functionality.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="why-quarkus-over-other-technologies"><a class="anchor" href="#why-quarkus-over-other-technologies"></a>Why Quarkus over other technologies</h2>
<div class="sectionbody">
<div class="paragraph">
<p>After their evaluation, they chose Quarkus because of:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Microservices Support. An architectural approach based on microservices was their choice for the innovation work on which they had decided to embark.</p>
</li>
<li>
<p>GraalVM support. They needed to support R developers and liked its polyglot capabilities.</p>
</li>
<li>
<p>Smaller footprint. Quarkus lower memory consumption would result in less cloud costs.</p>
</li>
<li>
<p>Standards and best-of-breed framework support. The technology stack included in Quarkus was impressive and gave them all the functionality they needed to implement microservices.</p>
</li>
<li>
<p>Familiarity. The technology stack included in Quarkus included technologies Talkdesk developers were already familiar with.</p>
</li>
<li>
<p>Open source project. The community built around Quarkus was very active and prolific in the addition of functionality and support of existing capabilities.</p>
</li>
<li>
<p>Live coding. This made their developers more productive because it significantly reduced the time developers were spending building, deploying and troubleshooting code changes.</p>
</li>
<li>
<p>Out-of-the-box features, such as MicroProfile Config, Cross-origin resource sharing (CORS) filter, Flyway, etc.</p>
</li>
<li>
<p>Awesome documentation. Quarkus guides provided step-by-step documentation for every extension.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="a-polyglot-solution-within-a-single-jvm"><a class="anchor" href="#a-polyglot-solution-within-a-single-jvm"></a>A polyglot solution within a single JVM</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Talkdesk decided to implement 4 microservices in Quarkus as their first step of their innovation initiative. The technology stack was based on Quarkus extensions, namely Hibernate ORM, MicroProfile, and Camel, plus RabbitMQ, which they are looking to replace with Kafka in the near future.</p>
</div>
<div class="paragraph">
<p>The Talkdesk data scientists use R for data analysis and Python for natural language processing. Re-training their data scientists and migrating their work to Java was not feasible so they decided to wrap the services that used R and Python with MicroProfile. This allowed the Quarkus microservices to invoke these data analytics functions resulting in increased developer productivity and collaboration because the data scientists could continue doing R and Python and Java developers could continue doing Java. Troubleshooting the entire system was also improved since end-to-end debugging (from Java stack to R and Python) could be done directly from Quarkus.</p>
</div>
<div class="paragraph">
<p>The 4 Quakus microservices, which run in JVM mode, have been in production since the beginning of October 2019, and cover the following functionality:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Long running actions</p>
</li>
<li>
<p>Front-end capabilities</p>
</li>
<li>
<p>Templating and configuration - data processing</p>
</li>
<li>
<p>Integration with rest of company’s other services</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The team that started the Quarkus microservices development was composed of 2 developers who spent two weeks ramping up on the technology. The learning curve was small because of the familiarity that Talkdesk developers had with the Quarkus extensions. The implementation of the first 4 Quarkus microservices, which was part of their innovation initiative, took a total of 6 months from kickoff to production: 3 months working on the prototype, followed by 3 months for internal release to production. They use a test-driven development approach and to this end they make use of the built-in Quarkus Tests capabilities.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="the-benefits"><a class="anchor" href="#the-benefits"></a>The benefits</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Quarkus has helped Talkdesk to streamline their development process with a familiar environment by providing a set of technologies well known to their developers, like Hibernate ORM, MicroProfile, Camel,  Kubernetes, etc. It has also helped them with their test-driven development approach by leveraging Quarkus built-in testing harness. This combination resulted in a fast 2-week ramp-up to high developer productivity due a very small learning curve and existing expertise of the Quarkus extensions. In addition, the generation of a single small JAR with “just your code”, less memory consumption and faster startup times in JVM and native modes make Quarkus very interesting for the cloud and containers. All of this has allowed Talkdesk to maintain their continued competitive edge in the market.</p>
</div>
<div class="paragraph">
<p>As Roberto Cortez, Talkdesk Principal Architect, described <em>“Quarkus has introduced a new paradigm that puts things upside down on the way things are run under the covers - supporting native, all reflection done at compile time and not runtime is just amazing!”</em>.</p>
</div>
<div class="paragraph">
<p>In addition, their use of the Quarkus development mode, i.e. live coding, allows their developers to change code on the fly, making them more productive. Talkdesk tests most features via Quarkus Tests, which they find very valuable. Not only does the built-in Quarkus testing harness allows their developers to quickly and easily include tests into their code but it also encourages developers to follow Talkdesks’s established test-driven development best practices. Developers are free to use development mode but they are encouraged to write Quarkus Tests first.</p>
</div>
<div class="paragraph">
<p>Furthermore, their ability to wrap R scripts and Python with MicroProfile (MicroProfile is calling the GraalVM API to invoke R and Python) is giving them a competitive edge because they can write code fast and debug even faster since they have everything running on the same JVM. They are able to use MicroProfile JWT, MicroProfile Config, and MicroProfile Fault Tolerance, etc. across all microservices including the ones that call R and Python. They don’t need to use different security mechanisms for Python and R, for example. They use MicroProfile APIs as a way to standardize approaches to security, Fault Tolerance, Config, etc. across all microservices. And this benefit allows their data scientists to continue to use their favorite tools in R or Python to write their code.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="the-future"><a class="anchor" href="#the-future"></a>The future</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Talkdesk started their journey into Quarkus with just 2 developers but are now staffed up to 20 developers dedicated to the creation of new innovative microservices based on the Quarkus technology stack. They are currently developing 8 brand new microservices and their plan is to continue to create new ones.</p>
</div>
<div class="paragraph">
<p>They are currently running all microservices in JVM mode because some of the libraries that they use can only run in JVM mode. They plan to replace these libraries with others that are capable of running in native mode. Once they accomplish this, they will be able to run their Quarkus microservices in native mode.</p>
</div>
<div class="paragraph">
<p>Because their Quarkus microservices consume less memory and have fast startup times, they expect to see savings in cloud memory and compute resources.</p>
</div>
<div class="paragraph">
<p>At present, it’s in their tentative plans to first do an internal release of the new product based on Quarkus microservices and then select a few customers to try out the new solution. Finally, they plan to go GA with the product in the next 6 months (first calendar quarter of 2020).</p>
</div>
<div class="paragraph">
<p>For more information on Quarkus:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Quarkus website: <a href="http://quarkus.io" class="bare">http://quarkus.io</a></p>
</li>
<li>
<p>Quarkus GitHub project: <a href="https://github.com/quarkusio/quarkus" class="bare">https://github.com/quarkusio/quarkus</a></p>
</li>
<li>
<p>Quarkus Twitter: <a href="https://twitter.com/QuarkusIO" class="bare">https://twitter.com/QuarkusIO</a></p>
</li>
<li>
<p>Quarkus chat: <a href="https://quarkusio.zulipchat.com/" class="bare">https://quarkusio.zulipchat.com/</a></p>
</li>
<li>
<p>Quarkus mailing list: <a href="https://groups.google.com/forum/#!forum/quarkus-dev" class="bare">https://groups.google.com/forum/#!forum/quarkus-dev</a></p>
</li>
<li>
<p><a href="https://youtube.com/quarkusio">Quarkus YouTube Channel</a></p>
</li>
<li>
<p><a href="https://www.redhat.com/cms/managed-files/cl-4-reasons-try-quarkus-checklist-f19180cs-201909-en.pdf">Four reasons to use Quarkus</a></p>
</li>
</ul>
</div>
</div>
</div>
              
          </div>
          <div class="width-12-12"><div class="share-page">
  <a class="share-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://quarkus.io/blog/talkdesk-chooses-quarkus-for-fast-innovation/&title=For fast innovation and to stay ahead of the competition, Talkdesk chooses Quarkus" rel="nofollow" target="_blank" title="Share on LinkedIn">
    <img src="/assets/images/share-page/icons_social-linkedin.png"/>
  </a>
  <a class="share-twitter" href="https://twitter.com/intent/tweet?text=For fast innovation and to stay ahead of the competition, Talkdesk chooses Quarkus&url=https://quarkus.io/blog/talkdesk-chooses-quarkus-for-fast-innovation/&via=quarkusio&related=quarkusio" rel="nofollow" target="_blank" title="Share on Twitter">
    <img src="/assets/images/share-page/icons_social-twitter.png"/>
  </a>
  <a class="share-facebook" href="https://facebook.com/sharer.php?u=https://quarkus.io/blog/talkdesk-chooses-quarkus-for-fast-innovation/" rel="nofollow" target="_blank" title="Share on Facebook">
    <img src="/assets/images/share-page/icons_social-facebook.png"/>
  </a>
  <a class="share-reddit" href="http://www.reddit.com/submit?url=https://quarkus.io/blog/talkdesk-chooses-quarkus-for-fast-innovation/" onclick="window.open(this.href, 'pop-up', 'left=20,top=20,width=900,height=500,toolbar=1,resizable=0'); return false;" title="Share on Reddit" >
    <img src="/assets/images/share-page/icons_social-reddit.png"/>
  </a>
  <a class="share-email" href="mailto:?subject=For fast innovation and to stay ahead of the competition, Talkdesk chooses Quarkus&amp;body=For fast innovation and to stay ahead of the competition, Talkdesk chooses Quarkus https://quarkus.io/blog/talkdesk-chooses-quarkus-for-fast-innovation/" title="Share via Email" >
    <img src="/assets/images/share-page/icons_social-email.png"/>
  </a>
</div>
</div>
        </div>
      </div>
    </div>
  </div>
</div>

  </div>

  <div class="content project-footer">
  <div class="footer-section">
    <div class="logo-wrapper">
      <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_reverse.svg" class="project-logo" title="Quarkus"></a>
    </div>
  </div>
  <div class="grid-wrapper">
    <p class="grid__item width-3-12">Quarkus is open. All dependencies of this project are available under the <a href='https://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache Software License 2.0</a> or compatible license.<br /><br />This website was built with <a href='https://jekyllrb.com/' target='_blank'>Jekyll</a>, is hosted on <a href='https://pages.github.com/' target='_blank'>Github Pages</a> and is completely open source. If you want to make it better, <a href='https://github.com/quarkusio/quarkusio.github.io' target='_blank'>fork the website</a> and show us what you’ve got.</p>

    
      <div class="width-1-12 project-links">
        <span>Navigation</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="/">Home</a></li>
          
            <li><a href="/guides">Guides</a></li>
          
            <li><a href="/community/#contributing">Contribute</a></li>
          
            <li><a href="/faq">FAQ</a></li>
          
            <li><a href="/get-started">Get Started</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Contribute</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://twitter.com/quarkusio">Follow us</a></li>
          
            <li><a href="https://github.com/quarkusio">GitHub</a></li>
          
            <li><a href="/security">Security&nbsp;policy</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Get Help</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://groups.google.com/forum/#!forum/quarkus-dev">Forums</a></li>
          
            <li><a href="https://quarkusio.zulipchat.com">Chatroom</a></li>
          
        </ul>
      </div>
    

    
      <div class="width-3-12 more-links">
        <span>Quarkus is made of community projects</span>
        <ul class="footer-links">
          
            <li><a href="https://vertx.io/" target="_blank">Eclipse Vert.x</a></li>
          
            <li><a href="https://microprofile.io" target="_blank">Eclipse MicroProfile</a></li>
          
            <li><a href="https://hibernate.org" target="_blank">Hibernate</a></li>
          
            <li><a href="https://netty.io" target="_blank">Netty</a></li>
          
            <li><a href="https://resteasy.github.io" target="_blank">RESTEasy</a></li>
          
            <li><a href="https://camel.apache.org" target="_blank">Apache Camel</a></li>
          
            <li><a href="https://code.quarkus.io/" target="_blank">And many more...</a></li>
          
        </ul>
      </div>
    
  </div>
</div>
  <div class="content redhat-footer">
  <div class="grid-wrapper">
    <span class="licence">
      <i class="fab fa-creative-commons"></i><i class="fab fa-creative-commons-by"></i> <a href="https://creativecommons.org/licenses/by/3.0/" target="_blank">CC by 3.0</a> | <a href="https://www.redhat.com/en/about/privacy-policy">Privacy Policy</a>
    </span>
    <span class="redhat">
      Sponsored by
    </span>
    <span class="redhat-logo">
      <a href="https://www.redhat.com/" target="_blank"><img src="/assets/images/redhat_reversed.svg"></a>
    </span>
  </div>
</div>


  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" integrity="sha384-8gBf6Y4YYq7Jx97PIqmTwLPin4hxIzQw5aDmUg/DDhul9fFpbbLcLh3nTIIDJKhx" crossorigin="anonymous"></script>
  <script type="text/javascript" src="/assets/javascript/mobile-nav.js"></script>
  <script type="text/javascript" src="/assets/javascript/scroll-down.js"></script>
  <script src="/assets/javascript/satellite.js" type="text/javascript"></script>
  <script src="https://quarkus.io/guides/javascript/config.js" type="text/javascript"></script>
  <script src="/assets/javascript/search-filter.js" type="text/javascript"></script>
  <script src="/assets/javascript/back-to-top.js" type="text/javascript"></script>
</body>

</html>
